package pcsr.drivers.epuckDriver.command;

import pcsr.drivers.epuckDriver.command.IePuckUartProtocol.*;


public interface IePuckCommand extends ISensorStatusObservable{

	public abstract DeviceInfo getDeviceInfo();
	
	public abstract String getDeviceName();
	
	/* LED Stuff*/
	public abstract void setBodyLed(LedStatus status);
	
	public abstract void setFrontLed(LedStatus status);
	
	public abstract void setLed(LedNumber led, LedStatus status);
	
	/* MOTOR Stuff */
	public abstract void getMotorSpeed();
	public abstract void setMotorSpeed(int left, int right);
	
	public abstract void getMotorPosition();
	public abstract void setMotorPosition(int left, int right);
	
	/* SOUNS Stuff */
	public abstract void PlaySound(Sounds sound);
	
	/* SENSORS Stuff */
	public abstract void getAccelerometer();	
	
	public abstract void getLightSensors();
	
	public abstract void getProximitySensors();
	
	public abstract void CalibrateProximitySensors();
	
	public abstract void getMicrophoneSensor();
	
	/* CAMERA Stuff */
	public abstract void getCamera();
	
	/* UTIL Stuff */
	public abstract void getVersion();
	
	public abstract void getSelector();	
	
	public abstract void Reset();
	
	public abstract void Stop();

	public void open() throws RuntimeException;

	/**
	 * Call the close() command when your program ends, otherwise you
	 * will have to turn the NXT brick off/on before you run another
	 * program using iCommand.
	 *
	 */
	public void close();
}
